package com.drug.common.constant;

/**
 * @author Alexlyn
 * @Date 2021/12/10 10:00
 * @Description: 正则校验常用规则
 * @Version 1.0
 */
public class ParamCheckPattern {
    /**
     * 正负数
     */
    public final static String isF = "^((-?[1-9][0-9]*)|0)|(-?(([1-9][0-9]*)|0)\\.([0-9]+))$";
    /**
     * 正负整数
     */
    public final static String isD = "^(-?[1-9][0-9]*)|0$";
    /**
     * 字母字符
     */
    public final static String isA = "^[A-Za-z]*$";
    /**
     * 数字字符
     */
    public final static String isN = "^[0-9]*$";
    /**
     * 字母数字字符(含符号)
     */
    // public final static String isAN = "^[A-Za-z0-9]*$";
    public final static String isAN = "^[\u0020-\u007F]*$";
    /**
     * 汉字字符
     */
    public final static String isC = "^[\u2E80-\u9FFF]*$";
    /**
     * 金额
     */
    public final static String isAmt = "^((-?[1-9][0-9]{0,14})|0)|(-?(([1-9][0-9]{0,14})|0)\\.([0-9]{1,2}))$";
    /**
     * 邮箱
     */
    public final static String isMail = "^[A-Za-z0-9]+([._\\-]*[A-Za-z0-9])*@([A-Za-z0-9]+[-A-Za-z0-9]*[A-Za-z0-9]+.)+[A-Za-z0-9]+$";
    /**
     * MAC地址
     */
    public final static String isMac = "^([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2}$";
    /**
     * IP地址
     */
    public final static String isIp = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";
    /**
     * 电话号码
     */
    public final static String isTel = "^(1[3-9][0-9]{9})|((0[0-9]{2,3})-?([0-9]{7,8}))$";
    /**
     * 身份证号
     */
    public final static String isIDCard = "^([1-9][0-9]{5}(18|19|20|21)[0-9]{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)[0-9]{3}[0-9Xx])|([1-9][0-9]{5}[0-9]{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)[0-9]{3})$";
    /**
     * 特殊字符
     */
    public final static String isEx = "[ _`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？]|\n|\r|\t";
    /**
     * 日期年校验 校验yyyy
     */
    public final static String yyyy = "^([0-9]{4})$";
    /**
     * 日期年月校验 校验yyyyMM
     */
    public final static String yyyyMM = "^(([0-9]{4})(0[1-9]|1[0-2]))$";
    /**
     * 日期年月校验 校验yyyy-MM
     */
    public final static String yyyy_MM = "^(([0-9]{4})-(0[1-9]|1[0-2]))$";
    /**
     * 包含闰年日期校验 校验yyyyMMdd
     */
    public final static String yyyyMMdd = "^((([0-9]{4})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))$";
    /**
     * 包含闰年日期校验 校验yyyy-MM-dd
     */
    public final static String yyyy_MM_dd = "^((([0-9]{4})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))$";
    /**
     * 包含闰年日期校验 校验yyyyMMddHHmmss
     */
    public final static String yyyyMMddHHmmss = "^((([0-9]{4})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))([0-1][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$";
    /**
     * 包含闰年日期校验 校验yyyyMMddHHmmssSSS
     */
    public final static String yyyyMMddHHmmssSSS = "^((([0-9]{4})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))([0-1][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])([0-9]{3})$";
    /**
     * 包含闰年日期校验 校验yyyy-MM-dd HH:mm:ss
     */
    public final static String yyyy_MM_dd_HH_mm_ss = "^((([0-9]{4})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";
    /**
     * 时间校验 校验HHmmss
     */
    public final static String HHmmss = "^([0-1][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$";
    /**
     * 时间校验 校验HH:mm:ss
     */
    public final static String HH_mm_ss = "^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";
}
